package de.hatraco.funderberg.blackjack.views;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

import de.hatraco.funderberg.blackjack.data.DataMISC;
import de.hatraco.funderberg.blackjack.data.GraphicsBlackJack;

public class ResolutionDialog extends JDialog {
	
	//Singleton Pattern: Stellt sicher, dass nur eine Instanz von ResolutionDialog existiert
	private static ResolutionDialog instance = new ResolutionDialog();

	public static ResolutionDialog getInstance() {
		if(instance == null) {
			instance = new ResolutionDialog();
		}
		return instance;
	}
	
	private JLabel bg_res;
	private JLabel res_text;
	
	//Definiert ein Array mit Strings (für die Auflösung), die in der JComboBox angezeigt werden sollen
	private String [] resolutions = {"< 800 x 600", "800 x 600", "1024 x 768", "1400 x 1050", "> 1400 x 1050", "I have no idea"};
	
	private JButton b_ok;
	
	private JComboBox resDropdown;
	
	private GraphicsBlackJack img;
	
	private ResolutionDialog() {
		
		//Instanziert GraphicsBlackJack (für die Bilder)
		this.img = GraphicsBlackJack.getInstance();
		
		//Legt die Größe des Fensters fest
		this.setSize(400,300);
		//Legt fest, dass die Größe nicht verändert werden kann
		this.setResizable(false);
		//Legt fest, dass das Fenster nicht über das "X" rechts oben geschlossen werden kann
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		//Gibt dem Fenster ein BorderLayout
		this.setLayout(new BorderLayout());
		//Legt den Hintergrund fest
		bg_res = new JLabel(img.getBgdialogdef());
		//Fügt den Hintergrund hinzu
		this.add(bg_res);
		//Gibt dem Hintergrund ein "leeres" Layout
        bg_res.setLayout(null);
        
        //Instanziert, Modifiziert und Positioniert die Elemente
        //JLabel
        res_text = new JLabel("Please select your screen resolution");
        res_text.setFont(DataMISC.ARIAL_BOLD20);
        res_text.setForeground(Color.WHITE);
        res_text.setBounds(0, 50, 400, 25);
        res_text.setHorizontalAlignment(SwingConstants.CENTER);
        res_text.setVisible(true);
        
        //JComboBox
        resDropdown = new JComboBox<>(resolutions);
        resDropdown.setFont(DataMISC.ARIAL_BOLD14);
        resDropdown.setBounds(100, 125, 200, 25);
        
        //Button
        b_ok = new JButton(img.getBtok());
        b_ok.setBounds(170, 210, img.getBtok().getIconWidth(), img.getBtok().getIconHeight());
        b_ok.setOpaque(true);
        b_ok.setHorizontalAlignment(SwingConstants.CENTER);
        b_ok.setVisible(true);
        
        //Fügt die Elemente dem Hintergrund hinzu
        bg_res.add(res_text);
        bg_res.add(resDropdown);
        bg_res.add(b_ok);
	}
	
	//Definiert Listener für den Button
	public void setResListener(ActionListener ae) {
		this.b_ok.addActionListener(ae);
	}

	public JButton getB_ok() {
		return b_ok;
	}

	public void setB_ok(JButton b_ok) {
		this.b_ok = b_ok;
	}

	public String[] getResolutions() {
		return resolutions;
	}

	public void setResolutions(String[] resolutions) {
		this.resolutions = resolutions;
	}

	public JComboBox getResDropdown() {
		return resDropdown;
	}

	public void setResDropdown(JComboBox resDropdown) {
		this.resDropdown = resDropdown;
	}
}
